new Vue({
    el: '#app',
    mixins: [Save],//组件配置文件，路径/utils/components.js
    data() {
        return {
            dataForm: {
                Store_SerialNumber: '', // 门店流水号（主键）
                Store_Name: '', // 门店名称
                Opened_Date: '', // 开店日期
                ProvinceNumber: '', // 省行政区编号
                CityNumber: '', // 市行政区编码
                CountyNumber: '', // 区行政区编码
                Detailed_Address: '', // 详细地址
                Store_Type: '', // 门店类别：0:实体店 1:网店
                Store_SubType: '', // 门店子类别：0:天猫店 1:抖音店 2:美团店 3:大众点评 4:京东店
                Enterprise_Info_SerialNumber: '', // 企业编号
                Creater_SerialNumber: '', // 创建人
                Create_Datetime: '', // 创建时间
                Row_Status: '0', // 行状态：0:正常 1:删除
                Operation_ID: '', // 操作人
                Operation_Datetime: '', // 操作时间
            },
            enterpriseList: [], // 企业列表，用于下拉选择
            city: [], // 城市数据
        }
    },
    mounted() {
        /**
         * 组件配置文件中自动执行方法
         * 1.this.init(); //初始化文件
         * 2.this.getData(); //仅修改时执行，根据BOM配置属性查询
         */
        let ls_URL = window.location.href;
        this.type = getQueryObject(ls_URL, "type") || '0';

        this.getEnterpriseList();
        this.getCityData();
    },
    // 在数据加载完成后执行（修改模式下）
    documentLoadFinished() {
        // 如果是添加模式，生成流水号
        if (this.action === 'Add') {
            this.generateSerialNumber();
        }
    },
    methods: {
        // 重写 getData 方法，确保查询模式下能正确加载数据
        async getData(nodeKey, callback) {
            try {
                this.loading = true;
                // 直接使用已知的表名和主键，避免依赖 DOM 的 data-options
                const tableName = 'store_info';
                const formName = 'dataForm';
                const primaryKey = 'Store_SerialNumber';
                
                // 查询门店数据
                const res = await generalApi.generalQueryByTableNameWithOriginal({
                    Data: tableName,
                    Condition: `${primaryKey}='${nodeKey}'`
                });
                
                if (res && res.length > 0) {
                    // 将查询到的数据赋值给 dataForm
                    Object.assign(this.dataForm, res[0]);
                } else {
                    this.$message.error('未找到该门店数据！');
                }
                
                this.loading = false;
                
                // 调用数据加载完成回调
                if (typeof callback === 'function') {
                    callback();
                }
            } catch (error) {
                console.error('加载门店数据失败：', error);
                this.$message.error('加载门店数据失败，请刷新页面重试！');
                this.loading = false;
            }
        },
        // 获取企业列表（从enterprise_info表查询）
        getEnterpriseList() {
            generalApi.generalQueryByTableName({
                Data: 'enterprise_info',
                Condition: `Row_Status='0'`
            }).then(data => {
                if (data && Array.isArray(data) && data.length > 0) {
                    this.enterpriseList = data.map(item => ({
                        Enterprise_Info_SerialNumber: item.Enterprise_Info_SerialNumber,
                        Enterprise_Name: item.Enterprise_Name
                    }));
                } else {
                    this.enterpriseList = [];
                }
            }).catch(xhr => {
                this.$message.error("获取企业列表失败，请联系开发者!")
            })
        },
        // 获取城市数据
        getCityData() {
            generalApi.generalFilePath('dtree.json').then(data => {
                this.city = data;
            }).catch(xhr => {
                this.$message.error("获取城市数据失败，请联系开发者!")
            })
        },
        // 生成流水号（Store_SerialNumber）
        generateSerialNumber() {
            const timestamp = Date.now();
            const random = Math.floor(Math.random() * 1000).toString().padStart(3, '0');
            this.dataForm.Store_SerialNumber = `ST${timestamp}${random}`;
        },
        // 更新省/市/区编号
        changeCity(val) {
            if (val) {
                // 更新编号
                this.dataForm.ProvinceNumber = val.substring(0, 2) + '0000';
                this.dataForm.CityNumber = val.substring(0, 4) + '00';
                this.dataForm.CountyNumber = val;
                // 详细地址需要用户手动输入，不清空已有内容
            } else {
                this.dataForm.ProvinceNumber = '';
                this.dataForm.CityNumber = '';
                this.dataForm.CountyNumber = '';
                // 清空详细地址
                this.dataForm.Detailed_Address = '';
            }
        },
        // 重写提交方法，在提交前设置必要的字段
        async handleSubmit() {
            // 设置操作时间和操作者
            const now = new Date();
            this.dataForm.Operation_Datetime = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')} ${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}`;
            this.dataForm.Operation_ID = getCookie('user') || '';
            
            // 如果是添加模式，设置创建人和创建时间
            if (this.action === 'Add') {
                this.dataForm.Creater_SerialNumber = getCookie('user') || '';
                this.dataForm.Create_Datetime = this.dataForm.Operation_Datetime;
                // 如果没有生成流水号，则生成一个
                if (!this.dataForm.Store_SerialNumber) {
                    this.generateSerialNumber();
                }
            }
            
            // 设置行状态
            if (!this.dataForm.Row_Status) {
                this.dataForm.Row_Status = '0';
            }
            
            // 调用父类的提交方法
            const allValid = await this.validateAllForms();
            if (allValid) {
                this.loading = true;
                try {
                    const lJSONObject_DataSet = this.generateStructure();
                    const res = await generalApi.generalSaveByRequestBody({
                        Data: lJSONObject_DataSet
                    })
                    if (res.Status == "success") {
                        this.$message.success("提交成功");
                        window.location.href = './index.html';
                    } else {
                        this.$message.error("提交失败，请重试！");
                    }
                    this.loading = false;
                } catch (error) {
                    console.error(error);
                    this.$message.error("系统错误，请联系开发者!")
                    this.loading = false;
                }
            } else {
                this.$message({
                    message: '存在未填写的必填项！',
                    type: 'warning'
                });
            }
        }
    }
})
